//
// Created by ubuntu on 6/10/23.
//

#ifndef KS_GPS_IPC_H
#define KS_GPS_IPC_H

#include <sys/msg.h>
#include <sys/ipc.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <wait.h>
#include <string.h>
#include <sqlite3.h>

#define SVKEY 78
#define BUFFER_SIZE 512
#endif //KS_GPS_IPC_H

struct gpgga {
    char gga[10];//<0>保存$GPGGA
    char time[20];//<1>保存时间 hhmmss.sss
    char latitude[20];//<2>保存纬度 ddmm.mmmm
    char NS[4];//<3>保存南北半球信息
    char longitude[20];//<4>保存经度 dddmm.mmmm
    char EW[4];//<5>保存东西半球信息
    char gps_status[4];//<6>保存GPS状态 0表示未定位 1表示非差分定位 2表示差分定位 3表示无效PPS 6表示正在估算
    char wx_num[4];//<7>正在使用的卫星数量
    char HDOP[20];//<8>HDOP水平经度因子
    char HBGD[20];//<9>海拔高度
    char height[20];//<10>地球椭球面相对大地水准面的高度
    char cf_time[20];//<11>保存时间 hhmmss.sss
    char cf_ID[20];//<12>差分站ID 号0000-1023（前面的0 也将被传输，如果不是差分定位将为空）
};
typedef struct gpgga gpgga;
struct msg_form  //消息结构
{
    long msg_type;
    char msg_text[BUFFER_SIZE];  //文本长度
};
typedef struct msg_form message;


void client();

void server();

char *join(char *a, char *b);

gpgga parse_strings(char *string);

char *substring(char *dst, char *src, int start, int len);

char *toString(gpgga data);

char *string_pretreatment(char *string);